package com.ld.poetry.aigc.iflycode.gclu.unittest;


import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class StringUtilsTest {

    @Test
    public void testReverse() {
        // 正向用例：正常字符串反转
        assertEquals("dcba", StringUtils.reverse("abcd"));

        // 正向用例：空字符串反转
        assertEquals("", StringUtils.reverse(""));

        // 正向用例：单字符字符串反转
        assertEquals("a", StringUtils.reverse("a"));

        // 反向用例：null值
        assertThrows(NullPointerException.class, () -> StringUtils.reverse(null));
    }

    @Test
    public void testIsPalindrome() {
        // 正向用例：回文字符串
        assertTrue(StringUtils.isPalindrome("madam"));

        // 正向用例：非回文字符串
        assertFalse(StringUtils.isPalindrome("hello"));

        // 正向用例：空字符串
        assertTrue(StringUtils.isPalindrome(""));

        // 反向用例：null值
        assertThrows(NullPointerException.class, () -> StringUtils.isPalindrome(null));
    }

    @Test
    public void testCapitalize() {
        // 正向用例：首字母大写
        assertEquals("Hello", StringUtils.capitalize("hello"));

        // 正向用例：空字符串
        assertEquals("", StringUtils.capitalize(""));

        // 正向用例：首字母已经是大写
        assertEquals("Hello", StringUtils.capitalize("Hello"));

        // 反向用例：null值
        assertThrows(NullPointerException.class, () -> StringUtils.capitalize(null));
    }
}
